#!/usr/bin/env python
# coding: utf-8
import sys
import time
reload(sys)
sys.setdefaultencoding('utf-8')
import httplib
import re
from wxbot import *

class MyWXBot(WXBot):
    shorturl = u'xiaohaitunyingyuan.movie.lily789.com'
    getnameurl=u'http://'+shorturl+u'/extra/movmsg_get.php?name='
    getfooturl=u'http://'+shorturl+u'/extra/get_foot.php'
    gethotmovurl= u'http://'+shorturl+u'/extra/hotmov_get.php'
    def handle_msg_all(self, msg):
        #print msg
        #如果是文本消息,接收
        if msg['msg_type_id'] == 4 and msg['content']['type'] == 0:
            #获得用户发来的文本消息
            message=msg['content']['data']
            #如果文本消息的第一个字是“看”，向下执行
            if message[0] == u'看':
                #请求的视频网站的URL
                url = self.getnameurl  + message[1:]
                #使用HTTP获得连接
                conn = httplib.HTTPConnection(self.shorturl)
                #使用Get方式
                conn.request(method=u'GET', url=url)
                #请求得到返回的Respose
                response = conn.getresponse()
                #读取Respose的返回数据
                res = response.read()
                # 返回的数据结果长度如果是11
                if len(res) == 11:
                    retext = u'没有搜到相关视频，请您输入正确的关键字！'
                    #回复好友没有找到相关的影片
                    self.send_msg_by_uid(retext, msg['user']['id'])
                else:
                    #否则就是查询到了数据，这样就把得到的Json数据转换成Python数组
                    json_to_python = json.loads(res)
                    #返回数据头部
                    retext = u'帮您查询到 :'
                    #遍历查询到的数据
                    for index in range(len(json_to_python) - 1):
                        #影片数据
                        retext = retext + u'\r\n' + u'影片：' + json_to_python[index]['d_name'] + '\n' + u'连接：' + \
                                 json_to_python[index]['d_id']
                    #底部的自定义公众号关注连接
                    retext = retext + u'\r\n' + json_to_python[len(json_to_python) - 1]['foot']
                    #返回消息
                    self.send_msg_by_uid(retext, msg['user']['id'])
        #如果是群消息，接收
        if msg['msg_type_id'] == 3 and msg['content']['type'] == 0:
            #获得用户发来的文本消息
            message=msg['content']['data']
            # 如果文本消息的第一个字是“看”，向下执行
            if message[0] == u'看':
                # 影片的名字
                moviename = message[1:]
                # 请求的视频网站的URL
                url = self.getnameurl + moviename
                # 使用HTTP获得连接
                conn = httplib.HTTPConnection(self.shorturl)
                # 使用Get方式
                conn.request(method=u'GET', url=url)
                # 请求得到返回的Respose
                response = conn.getresponse()
                # 读取Respose的返回数据
                res = response.read()
                # 返回的数据结果长度如果是11
                if len(res) == 11:
                    #接口
                    footurl = self.getfooturl
                    #获得接口地址
                    conn1 = httplib.HTTPConnection(self.shorturl)
                    #get方式
                    conn1.request(method=u'GET', url=footurl)
                    # 请求得到返回的Respose
                    response = conn1.getresponse()
                    # 读取Respose的返回数据
                    res1 = response.read()
                    #返回给微信的数据
                    retext =u'抱歉！没有搜到【'+ moviename + u'】相关内容，请检查您是否输入正确的影片名称！网站正在努力更新中。。。'+ u'\n' + res1
                    #返回到群里结果
                    self.send_msg_by_uid(retext, msg['user']['id'])
                else:
                    # 否则就是查询到了数据，这样就把得到的Json数据转换成Python数组
                    json_to_python = json.loads(res)
                    # 返回数据头部
                    retext = u'查询到'+moviename+'相关结果 :'
                    #遍历查询到的数据
                    for index in range(len(json_to_python) - 1):
                        # 影片数据
                        retext = retext + u'\r\n' + u'影片：' + json_to_python[index]['d_name'] + u'\n' + u'连接：' + \
                                 json_to_python[index]['d_id']
                    # 底部的自定义公众号关注连接
                    retext = retext + '\r\n' + json_to_python[len(json_to_python) - 1]['foot']
                    #返回消息
                    self.send_msg_by_uid(retext, msg['user']['id'])
            else:
                p = re.compile(r'^(https?://\w+(?:\.[^\.]+)+(?:/.+)*)?#?((?:/[^/]+)*)$')
                result1 = p.findall(message)
                if result1:
                    username=msg['content']['user']['name']
                    retext=u'@'+username+u' 警告，你已被记录为违规者，请不要发链接、广告等信息，达到限制将会被清除此群！'
                    self.send_msg_by_uid(retext, msg['user']['id'])
        #如果有人进群，执行
        if msg['msg_type_id'] == 3 and msg['content']['type'] == 12:
            #获得消息内容
            contentmsg=msg['content']['data']
            helper = re.findall(u'邀请\"(.*)\"加入', contentmsg)
            username = ''.join(helper)
            #判断消息内容中,获得用户名，可以知道是否是有人入群
            if username:
                #热门影片接口地址
                hotmvurl = self.gethotmovurl
                #获得连接
                conn2 = httplib.HTTPConnection(self.shorturl)
                #get方法
                conn2.request(method=u"GET", url=hotmvurl)
                #获得返回消息
                response = conn2.getresponse()
                #读取返回的数据
                res2 = response.read()
                #返回的最终消息
                retxt = u'欢迎新成员【' + username + u'】加入观影群：（输入：看+电影名称 即可获得相关影片）例如：看鬼吹灯'+ u'\n警告！本群禁止发广告，链接，二维码等信息，如经查证，将踢出发广告者和拉此人进入者！' + u'\n热门影片推荐：\n' + res2
                #向微信返回消息
                time.sleep(3)
                self.send_msg_by_uid(retxt, msg['user']['id'])
            else:
                #如果不是有人进去，则输出No
                print "No such!!"


def main():
    bot = MyWXBot()
    #bot.DEBUG = True
    bot.conf['qr'] = 'png'
    bot.run()


if __name__ == '__main__':
    main()
